package com.UnionPayCenter.distribution.manager;

import com.UnionPayCenter.distribution.dto.PageQueryBaseDTO;
import com.UnionPayCenter.distribution.entity.DistributionSnDO;
import com.github.pagehelper.Page;

import java.util.List;

/**
 * 保存分销流水
 *
 * @author Noah
 * @since 1.0.0, 2019/07/10
 */
public interface DistributionSnManager {

    /**
     * 根据userid查询记录条数
     *
     * @param bId    商铺ID
     * @param shopId 店铺ID
     * @param userId 用户ID
     * @return
     */
    int countRecordByUserId(Long bId, Long shopId, Long userId, Integer level);

    /**
     * 根据用户计算收益金额
     *
     * @param bId    商铺ID
     * @param shopId 店铺ID
     * @param userId 用户ID
     *               @param level 分销等级
     * @return
     */
    int sumShareAmountByUserId(Long bId, Long shopId, Long userId,Integer level) ;


    /**
     * 保存分销流水
     *
     * @param distributionSnDO 分销流水信息
     */
    void saveDistributionSn(DistributionSnDO distributionSnDO);

    /**
     * 根据用户信息获取分销流水
     *
     * @param bId    商铺ID
     * @param shopId 店铺ID
     * @param userId 用户ID
     * @param level 分销等级
     * @param pageQueryBaseDTO  查询基本条件
     * @return 分销流水列表
     */
    Page<DistributionSnDO> listDistributionSn(Long bId, Long shopId, Long userId,Integer level, PageQueryBaseDTO pageQueryBaseDTO);

    /**
     * 根据用户信息获取分销流水
     *
     * @param bId    商铺ID
     * @param shopId 店铺ID
     * @param userId 用户ID
     * @return 分销流水列表
     */
    List<DistributionSnDO> listDistributionSn(Long bId, Long shopId, Long userId);

    /**
     * 根据用户信息获取分销流水
     *
     * @param bId    商铺ID
     * @param shopId 店铺ID
     * @param userId 用户ID
     * @return 分销流水列表
     */
    Page<DistributionSnDO> pageDistributionSn(Long bId, Long shopId, Long userId, Integer shareLvl, Integer page, Integer pageSize);


}
